Jump To:
Technical Q&As
Apple provides opportunities for developers to create hardware devices, including memory, mass storage, PCI, CardBus, USB, FireWire, and wireless solutions. Developer notes listed in the Apple Hardware topic provide relevant connector, cabling, and pin-out information, physical dimensions, electrical and thermal requirements, and pointers and references to standards.

Hardware Resources
A guided introduction and learning path to developing hardware and device-level software for Apple's computers and servers.  
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Date
Switching between one and two machine mode for the Open Firmware user interface (HTML) ()
HW37: Explains how to change from one machine mode to two in the Open Firmware user interface.
Open Firmware 1999-02-15
Using "words" in Open Firmware (HTML)
HW73: Explains how to search for specific entries within all the global and local Open Firmware words.
Open Firmware 1999-10-11
Was that a path I just saw? (HTML)
HW101: Describes the Open Firmware path that is occasionally shown at boot time.
Open Firmware 2000-10-06
What are generic names in Open Firmware? (HTML) ()
HW34: Documents the generic names in Open Firmware.
Open Firmware 1999-02-15
What is a tokenizer? (HTML) ()
HW58: Defines a tokenizer.
Open Firmware 1999-03-29
What is an Open Firmware devalias? (HTML)
HW99: Describes devaliases in Open Firmware.
Open Firmware 2000-10-06
What is an Open Firmware phandle, and why can't I access it from the Mac OS? (HTML)
HW76: Explains an "Open Firmware phandle" and why it is inaccessible from the Mac OS.
Open Firmware 1999-11-15
What is the return stack in Open Firmware and can I use it? (HTML)
HW67: Describes the purpose of the Open Firmware return stack and how developers can use it.
Open Firmware 1999-10-11
Why didn't I boot from the CD? (HTML)
HW98: Describes the behavior of holding down the "c" key at boot time.
Open Firmware 2000-10-06
The "/aliases" node in the device tree (HTML)
HW89: Describes the aliases node in the Open Firmware device tree.
PCI and PC Card 2000-09-05
The AAPL, slot-name property and PCI (HTML) ()
HW61: Discusses the use of the AAPL,slot name property for PCI
PCI and PC Card 1999-04-19
Adding dependencies with kmodload (HTML)
QA1097: Illustrates how to specify dependencies when using kmodload.
PCI and PC Card 2001-12-05
ANSI SCSI Standards (HTML)
Deprecated - DV03: Describes past Macintosh systems that did not fully support the ANSI SCSI-1 standard.
PCI and PC Card 1995-07-01
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
PCI and PC Card 1999-02-15
Are the Name Registry device tree nodes unique? (HTML)
Deprecated - HW64: Discusses whether Name Registry nodes copied from the Open Firmware device tree are unique.
PCI and PC Card 1999-10-11
Avoiding Kernel Event Conflicts (HTML)
QA1063: Documents the namespace for the vendor_code field of the kern_event_msg structure.
PCI and PC Card 2001-09-14
Can you explain the words "begin" and "again"? (HTML)
HW70: Explains the Forth looping words "begin" and "again" and how to escape such a loop.
PCI and PC Card 1999-10-11
The "chosen" node in the device tree (HTML)
HW88: Describes how to find the "chosen" node in the Open firmware device tree.
PCI and PC Card 2000-09-05
Converting a numeric string to a number under Forth (HTML) ()
HW52: Demonstrates numeric string conversion in Forth.
PCI and PC Card 1999-03-29
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
PCI and PC Card 1999-03-29
Determining Open Firmware version (HTML)
HW100: Demonstrates how to find out the version of Open Firmware on your Macintosh.
PCI and PC Card 2000-10-06
Difference between an Open Firmware word and method (HTML) ()
HW46: Describes the differences between an Open Firmware word and an Open Firmware method.
PCI and PC Card 1999-02-15
Difference between using Restart or Shut Down in the Finder's Special menu in Open Firmware (HTML) ()
HW47: Explains the differences between using Restart or Shut Down on Open Firmware
PCI and PC Card 1999-02-15
Displaying PCI Configuration Registers contents in Open Firmware (HTML)
QA1036: Demonstrates how to display PCI Configuration Resister contents in Open Firmware.
PCI and PC Card 2001-05-18
Do PowerBooks have a PCI bus? (HTML) ()
HW43: Explains that a Powerbook has a PCI bus.
PCI and PC Card 1999-02-15
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
PCI and PC Card 2001-12-05
Energy Star PCI Device (HTML) ()
QA1108: Provides useful information for developers of Energy Star-compliant PCI devices.
PCI and PC Card 2002-01-15
Expansion ROM device properties (HTML) ()
HW50: Describes the Open Firmware properties that should be included in a boot device's expansion ROM.
PCI and PC Card 1999-03-29
FCode & OS X (HTML) ()
QA1106: Provides useful tips for Open Firmware debugging on on machines introduced in 2001 or later.
PCI and PC Card 2002-01-15
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
PCI and PC Card 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
PCI and PC Card 1999-03-29
The "green" PCI bus (HTML)
HW93: Explains why the PCI bus is considered "green".
PCI and PC Card 2000-09-05
How can I tell if a PCI device has on board I/O space? (HTML)
QA1287: Demonstrates "how to" tell if a PCI device has on board I/O space.
PCI and PC Card 2003-09-24
How many PCI header types exist today? (HTML)
HW92: Briefly describes the three PCI header types defined in the PCI 2.2 specification.
PCI and PC Card 2000-09-05
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
PCI and PC Card 2003-10-28
IODeviceTree & the IORegistry (HTML) ()
QA1120: Describes the IODeviceTree plane in the Mac OS X IORegistry.
PCI and PC Card 2002-02-13
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
PCI and PC Card 2002-01-15
IOLog and Interrupt Context (HTML) ()
QA1100: Describes when IOKit runs at primary (hardware) interrupt context.
PCI and PC Card 2002-02-13
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
PCI and PC Card 1999-11-15
Issues with boot time KEXT loading (HTML) ()
QA1087: Explains how to solve problems with loading KEXTs at boot time.
PCI and PC Card 2004-01-15
Legacy Devices (HTML)
HW84: Discusses why legacy devices with hard-wired I/O addresses may not work properly with Open Firmware.
PCI and PC Card 2000-03-20
Locating the 1275-1994 Standard Document (HTML)
HW85: Alerts that the Open Firmware (IEEE 1275-1994) document can't be found at the IEEE Standards Association site.
PCI and PC Card 2000-07-17
Making sense of IOKit error codes (HTML) ()
QA1075: Explains how to interpret I/O Kit error codes.
PCI and PC Card 2002-02-07
Open Firmware device tree nodes (HTML)
HW86: Explains the usage of the "@n" notation in Open Firmware device tree nodes.
PCI and PC Card 2000-09-05
Open Firmware Memory bus speed (HTML)
HW97: Describes a method to display memory bus speed for G3 or G4 Macintosh in Open Firmware.
PCI and PC Card 2000-09-22
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
PCI and PC Card 2000-09-05
PCI address/data stepping (HTML)
HW94: Explains that Apple does not support PCI address/data stepping.
PCI and PC Card 2000-09-05
PCI bus on the iMac (HTML) ()
HW42: Explains that the iMac has a PCI bus even though it has no expansion slots.
PCI and PC Card 1999-02-15
PCI Bus? (HTML)
QA1104: Answers the question, "Do all Macintosh computers have a PCI bus?"
PCI and PC Card 2001-12-21
PCI class codes (HTML)
HW91: Explains why PCI class codes are important.
PCI and PC Card 2000-09-05
PCI Header types (HTML)
HW78: Describes the three required types of PCI headers to be provided in its configuration header space.
PCI and PC Card 1999-11-15
PCI Macintoshes and CardBus controllers (HTML)
HW87: Explains why older PCI Macintoshes do not recognize a Cardbus controller.
PCI and PC Card 2000-09-05
PCI SIG (HTML) ()
HW55: Describes the meaning of the acronym PCI SIG.
PCI and PC Card 1999-03-29
PCI Type 1 Cycles (HTML)
HW26: Describes the circumstances when the PowerMac generates a Configuration Type 1 command.
PCI and PC Card 1995-07-15
PCI/PCI-X slots on the Power Mac G5 (HTML)
QA1307: Discusses installing PCI/PCI-X cards of different speeds in the Power Mac G5.
PCI and PC Card 2003-09-30
Sample code for allocating an amount of dictionary space (HTML)
HW71: Discusses the allocation and the setting of memory for Dictionary space in Open Firmware.
PCI and PC Card 1999-10-11
Sleep vs. Doze on Mac OS X (HTML)
QA1309: Discusses and demonstrates sleep versus doze detection on Machintosh Mac OS X
PCI and PC Card 2003-10-09
Using "words" in Open Firmware (HTML)
HW73: Explains how to search for specific entries within all the global and local Open Firmware words.
PCI and PC Card 1999-10-11
Was that a path I just saw? (HTML)
HW101: Describes the Open Firmware path that is occasionally shown at boot time.
PCI and PC Card 2000-10-06
What are configuration variables in Open Firmware? (HTML) ()
HW38: Defines the configuration variables in Open Firmware.
PCI and PC Card 1999-02-15
What are generic names in Open Firmware? (HTML) ()
HW34: Documents the generic names in Open Firmware.
PCI and PC Card 1999-02-15
What is a CardBus host bus adapter HBA? (HTML)
HW79: Explains what a CardBus host bus adapter (HBA) is and discusses its implementation on the Macintosh.
PCI and PC Card 1999-11-15
What is a tokenizer? (HTML) ()
HW58: Defines a tokenizer.
PCI and PC Card 1999-03-29
What is an Open Firmware devalias? (HTML)
HW99: Describes devaliases in Open Firmware.
PCI and PC Card 2000-10-06
What is an Open Firmware phandle, and why can't I access it from the Mac OS? (HTML)
HW76: Explains an "Open Firmware phandle" and why it is inaccessible from the Mac OS.
PCI and PC Card 1999-11-15
What is the "dump" word and how do I use it? (HTML)
HW68: Describes the function of the Open Firmware word "dump" and how it can be used.
PCI and PC Card 1999-10-11
What is the return stack in Open Firmware and can I use it? (HTML)
HW67: Describes the purpose of the Open Firmware return stack and how developers can use it.
PCI and PC Card 1999-10-11
What numeric base is the default for the Open Firmware user interface? (HTML)
HW65: Describes how the default numeric base used by the Open Firmware user interface is hexadecimal.
PCI and PC Card 1999-10-11
When to use PCMCIA, PC Card, and CardBus (HTML)
HW77: Explains the differences between PCMCIA, PC Card, and CardBus.
PCI and PC Card 1999-11-15
Why did the name of the PCI bridge change? (HTML) ()
HW59: Explains the name change of the PCI bridge to the generic name "pci" in Open Firmware.
PCI and PC Card 1999-03-29
Why didn't I boot from the CD? (HTML)
HW98: Describes the behavior of holding down the "c" key at boot time.
PCI and PC Card 2000-10-06
Working with Configuration Variables (HTML) ()
QA1119: Explains how to delete a specific Open Firmware configuration variable without using Command-Option-P-R.
PCI and PC Card 2002-02-13
Are interrupts enabled while Open Firmware is running? (HTML) ()
HW44: Explains that interrupts are disabled when Open Firmware is running.
Performance 1999-02-15
Bluetooth Radio Power Class for Apple Systems (HTML) ()
QA1278: Notes Preferred Bluetooth Transmitter Characteristics for products designed for Apple Systems.
Performance 2003-08-06
Determining Open Firmware configuration variables (HTML) ()
HW56: Discusses how to determine the Open Firmware variables on a system.
Performance 1999-03-29
Determining RAM size & location in New World Machines (HTML)
QA1065: Demonstrates Open Firmware method of determining RAM size & location in New World Machines.
Performance 2001-08-01
Determining the version of Open Firmware on your Mac (HTML) ()
HW60: Describes a method to display the version of Open Firmware on a Macintosh.
Performance 1999-03-29
Disabling a Processor on a Multiprocessor System (HTML) ()
QA1141: Describes how to disable a processor on a multiprocessor system for testing purposes.
Performance 2002-05-22
Displaying PCI Configuration Registers contents in Open Firmware (HTML)
QA1036: Demonstrates how to display PCI Configuration Resister contents in Open Firmware.
Performance 2001-05-18
DRAM DIMM power pin connections for Macintosh Computers (HTML) ()
QA1271: Discusses design considerations for DRAM DIMM power pin connections for Macintosh Computers.
Performance 2003-07-04
Empty Memory Objects (HTML) ()
QA1259: Describes how two memory management edge cases are handled by the common Mac OS memory allocators.
Performance 2003-04-21
Energy Star PCI Device (HTML) ()
QA1108: Provides useful information for developers of Energy Star-compliant PCI devices.
Performance 2002-01-15
Explanation of SDRAM configuration Nomenclature (HTML)
HW75: Explains the three-part "Device configuration" numbers for SDRAM in the Power Mac G4 Computer Developer Note.
Performance 1999-10-18
Faster DDR DRAM in the 867MHz Power Mac G4 (Mirrored Drive Doors) (HTML) ()
QA1191: Confirms the use of faster DDR DRAM in the 867MHz Power Mac G4 (Mirrored Drive Doors).
Performance 2002-08-19
Generating an NMI Without a Programmer's Switch (HTML) ()
QA1264: Explains how to generate a non-maskable interrupt (NMI) on CPUs without programmer's switches.
Performance 2004-04-26
Getting started with Forth (HTML) ()
HW53: Describes where FCode driver developers can get information about the Forth programming language.
Performance 1999-03-29
How can I tell if a PCI device has on board I/O space? (HTML)
QA1287: Demonstrates "how to" tell if a PCI device has on board I/O space.
Performance 2003-09-24
How do I change the numeric base for the Open Firmware user interface? (HTML)
HW66: Explains how to change the numeric base for the Open Firmware user interface.
Performance 1999-10-11
How do I determine the top of the Open Firmware dictionary? (HTML)
HW69: Explains how to determine the top of the Open Firmware dictionary.
Performance 1999-10-11
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Performance 2003-10-28
IOKit Framework Headers (HTML) ()
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Performance 2002-01-15
Is the Open Firmware device tree object oriented? (HTML)
HW80: Discusses the object-oriented attributes of the Open Firmware device tree.
Performance 1999-11-15
Menu Bar Clock and NVRAM (HTML)
QA1102: Explains why booting with the Command-Option-P-R keys doesn't reset date and time preferences.
Performance 2001-12-21
Open Firmware version number (HTML)
HW96: Discusses the unique values of Open Firmware version numbers.
Performance 2000-09-22
OTScheduleDeferredTask When Task Running (HTML) ()
NW52: Describes what happens when you use OTScheduleDefferedTask to schedule a task that is running.
Performance 1997-10-13
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Performance 2000-09-05
PC100 SDRAM DIMMs on the Flat Panel iMac (HTML) ()
QA1130: Describes PC100 SDRAM DIMM limitations on the "original " Flat Panel iMac.
Performance 2002-03-18
PCI Bus? (HTML)
QA1104: Answers the question, "Do all Macintosh computers have a PCI bus?"
Performance 2001-12-21
PCI class codes (HTML)
HW91: Explains why PCI class codes are important.
Performance 2000-09-05
PCI Header types (HTML)
HW78: Describes the three required types of PCI headers to be provided in its configuration header space.
Performance 1999-11-15